package com.ruyuan.eshop.order.service;

import com.ruyuan.eshop.common.page.PagingInfo;
import com.ruyuan.eshop.order.domain.dto.AfterSaleOrderDetailDTO;
import com.ruyuan.eshop.order.domain.dto.AfterSaleOrderListDTO;
import com.ruyuan.eshop.order.domain.dto.OrderLackItemDTO;
import com.ruyuan.eshop.order.domain.query.AfterSaleQuery;
import com.ruyuan.eshop.order.enums.AfterSaleQueryDataTypeEnums;

import java.util.List;

/**
 * <p>
 * 售后查询service
 * </p>
 * 儒猿课堂: http://www.ruyuan2020.com
 * @Author zhonghuashishan
 * @Remark 有问题直接联系客服VX: ruyuan-1111 ，源码-笔记-技术交流群
 * @Version 1.0
 **/
public interface AfterSaleQueryService {

    /**
     * 校验列表查询参数
     *
     * @param query
     */
    void checkQueryParam(AfterSaleQuery query);

    /**
     * 执行列表查询 v1
     *
     * @param query
     */
    PagingInfo<AfterSaleOrderListDTO> executeListQueryV1(AfterSaleQuery query);

    /**
     * 执行列表查询 v2
     *
     * @param query     入参
     * @return
     */
    PagingInfo<AfterSaleOrderDetailDTO> executeListQueryV2(AfterSaleQuery query, AfterSaleQueryDataTypeEnums... queryDataTypes) throws Exception;

    /**
     * 查询售后单详情 v1
     *
     * @param afterSaleId
     * @return
     */
    AfterSaleOrderDetailDTO afterSaleDetailV1(String afterSaleId);

    /**
     * 查询售后单详情 v1
     *
     * @param afterSaleId
     * @return
     */
    AfterSaleOrderDetailDTO afterSaleDetailV2(String afterSaleId, AfterSaleQueryDataTypeEnums... queryDataTypes);

    /**
     * 查询缺品信息
     *
     * @param orderId
     * @return
     */
    List<OrderLackItemDTO> getOrderLackItemInfo(String orderId);
}
